home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO024.dsk / KNOWLEDGE.bas < prev    next >
BASIC Source File  |  2012-02-16  |  8KB  |  185 lines

  1. 10  IF  PEEK(104) < >64  THEN  POKE 104,64: POKE 16384,0: POKE 214,85: PRINT  CHR$(4);"RUN NEWTON'S KNOWLEDGE": REM     LOAD PROGRAM ABOVE HGR PAGE 1 
  2. 20  REM   <CTRL-J><CTRL-J>*** NEWTON'S KNOWLEDGE ***<CTRL-J><CTRL-J>
  3. 30  REM   *** VARIABLES ***
  4. 40  REM  QUE$(I,1) .TEXT OF QUESTION
  5. 50  REM  QUE$(I,2) .FULL ANSWER
  6. 60  REM  QUE$(I,3) .KEY WORD ONE
  7. 70  REM  QUE$(I,4) .KEY WORD TWO
  8. 80  REM       QUE$(I,5) .CLOSE KEY WORD
  9. 90  REM  PLAYER ... PLAYER NUMBER
  10. 100  REM  AN$ ... ANSWER
  11. 110  REM  PN$( ) ... PLAYER NAME
  12. 120  REM  QC...QUESTION COUNTER
  13. 130  REM  QP( )...QUESTIONS PICKED FLAG
  14. 140  REM  ZZ.........LOOP COUNTER FOR QP( )
  15. 150  REM  QN ....... QUESTION NUMBER
  16. 160  REM  NR( ) .... NUMBER RIGHT
  17. 170  REM  NT( ) .... NUMBER TRIED
  18. 180  REM  NQ ........NUMBER OF QUESTIONS
  19. 190  REM  PR$........WORD FOR PRAISE DISPLAY
  20. 200  REM  DUMMY$
  21. 210  REM  COL .. COLUMN NUMBER
  22. 220  REM  CHAR .. CURRENT CHARACTER IN STRING
  23. 230  REM  <CTRL-J><CTRL-J>*** INITIALIZATION ***<CTRL-J><CTRL-J>
  24. 240  DIM QUE$(100,5)
  25. 250  DIM QP(100)
  26. 260 D$ =  CHR$(4)
  27. 270  GOSUB 1480: REM   APPLE LOGO
  28. 280  HOME 
  29. 290  VTAB 9: HTAB 9: INVERSE : PRINT "NEWTON'S KNOWLEDGE"
  30. 300  VTAB 12: HTAB 8: PRINT "FREEWARE FROM DU PONT": NORMAL 
  31. 310  VTAB 23: HTAB 19: PRINT "one moment please..."
  32. 320  REM    <CTRL-J><CTRL-J>*** READ ARRAYS FROM DISK FILE ***<CTRL-J><CTRL-J>
  33. 330  PRINT D$;"OPEN KNOWLEDGE.DAT"
  34. 340  PRINT D$;"READ KNOWLEDGE.DAT"
  35. 350  INPUT NQ
  36. 360  FOR I = 1 TO NQ
  37. 370  FOR J = 1 TO 5
  38. 380  INPUT QUE$(I,J)
  39. 390  NEXT J
  40. 400  INPUT DUMMY$
  41. 410  NEXT I
  42. 420  PRINT D$"CLOSE"
  43. 430  HOME 
  44. 440  HTAB 7: INVERSE : PRINT "*** NEWTON'S  KNOWLEDGE ***"
  45. 450  HTAB 7: PRINT "A GAME OF SCIENTIFIC TRIVIA": NORMAL 
  46. 460  PRINT : PRINT 
  47. 470  PRINT "Newton's Knowledge is a game of         scientific trivia based on facts        presented in the PBS television series  Newton's Apple.": PRINT 
  48. 480  PRINT "Each player will be asked 20 questions. When you type in an answer, the program will look for key words in your         response.": PRINT 
  49. 490  PRINT "Although the program will accept some   misspellings, you should try to spell   your answer correctly."
  50. 500  PRINT : INVERSE : PRINT "BE SURE THE CAPS LOCK KEY IS DOWN": NORMAL 
  51. 510  PRINT 
  52. 520  VTAB 23: INPUT "Press return to play...";DUMMY$
  53. 530  HOME 
  54. 540  INPUT "How many players? ";N
  55. 550  FOR I = 1 TO N
  56. 560  PRINT 
  57. 570  PRINT "Name of player number ";I;" --> ";
  58. 580  INPUT "";Q$
  59. 590 PN$(I) = Q$
  60. 600  NEXT I
  61. 610  REM   <CTRL-J><CTRL-J>*** ASK QUESTIONS - KEEP SCORE ***<CTRL-J><CTRL-J>
  62. 620  FOR RN = 1 TO 20: REM       ROUND NUMBER
  63. 630  FOR PLAYER = 1 TO N
  64. 640 QC = QC +1: REM   COUNT QUESTIONS PICKED
  65. 650  IF QC = 55  THEN  FOR KK = 1 TO NQ:QP(KK) = 0: NEXT KK: REM    ZERO QUESTIONS PICKED FLAGS
  66. 660 QN =  INT( RND(8) *NQ +1): REM   SELECT QUESTION RANDOMLY
  67. 670  IF QP(QN) = 1  THEN 660: REM   GET ANOTHER QUESTION
  68. 680 QP(QN) = 1: REM   QUESTION PICKED FLAG
  69. 690  HOME 
  70. 700  PRINT "This question is number ";RN;" for ";PN$(PLAYER)
  71. 710  PRINT 
  72. 720 COL = 0
  73. 730  FOR CHAR = 1 TO  LEN(QUE$(QN,1))
  74. 740  IF  MID$ (QUE$(QN,1),CHAR,1) =  CHR$(32)  AND COL >26  THEN COL = 0: PRINT 
  75. 750 COL = COL +1
  76. 760  PRINT  MID$ (QUE$(QN,1),CHAR,1);
  77. 770  NEXT CHAR
  78. 780  PRINT 
  79. 790  REM   <CTRL-J><CTRL-J>** GET ANSWER ***<CTRL-J><CTRL-J>
  80. 800  VTAB 17
  81. 810  PRINT "Please enter your answer:"
  82. 820  PRINT 
  83. 830  INPUT "--> ";AN$
  84. 840  REM  <CTRL-J><CTRL-J>*** PARSE ANSWER ***<CTRL-J><CTRL-J>
  85. 850  FOR I = 1 TO  LEN(AN$)
  86. 860  IF  MID$ (AN$,I, LEN(QUE$(QN,3))) = QUE$(QN,3)  THEN NR(PLAYER) = NR(PLAYER) +1: GOSUB 1750: GOSUB 1770: VTAB 10: HTAB 16: PRINT PR$: GOTO 1070
  87. 870  NEXT I
  88. 880  IF  LEN(QUE$(QN,4)) = 0  THEN 920
  89. 890  FOR I = 1 TO  LEN(AN$)
  90. 900  IF  MID$ (AN$,I, LEN(QUE$(QN,4))) = QUE$(QN,4)  THEN NR(PLAYER) = NR(PLAYER) +1: GOSUB 1750: GOSUB 1770: VTAB 10: HTAB 16: PRINT PR$: GOTO 1070
  91. 910  NEXT I
  92. 920  IF  LEN(QUE$(QN,5)) = 0  THEN 960
  93. 930  FOR I = 1 TO  LEN(AN$)
  94. 940  IF  MID$ (AN$,I, LEN(QUE$(QN,5))) = QUE$(QN,5)  THEN NR(PLAYER) = NR(PLAYER) +1: GOSUB 1750: GOSUB 1850: VTAB 10: HTAB 16: PRINT PR$: GOTO 1070
  95. 950  NEXT I
  96. 960  HOME 
  97. 970  VTAB 5
  98. 980  PRINT "Sorry.  The correct answer is:"
  99. 990  PRINT : PRINT 
  100. 1000 COL = 0
  101. 1010  FOR CHAR = 1 TO  LEN(QUE$(QN,2))
  102. 1020  IF  MID$ (QUE$(QN,2),CHAR,1) =  CHR$(32)  AND COL >26  THEN COL = 0: PRINT 
  103. 1030 COL = COL +1
  104. 1040  PRINT  MID$ (QUE$(QN,2),CHAR,1);
  105. 1050  NEXT CHAR
  106. 1060  PRINT 
  107. 1070 NT(PLAYER) = NT(PLAYER) +1
  108. 1080  VTAB 24: INPUT "Press return to continue...";Q$
  109. 1090  NEXT PLAYER
  110. 1100  NEXT RN
  111. 1110  REM  <CTRL-J><CTRL-J>*** CALCULATE PERCENT RIGHT ***<CTRL-J><CTRL-J>
  112. 1120  FOR I = 1 TO N
  113. 1130 PCT(I) =  INT(NR(I) *100/NT(I) +.5)
  114. 1140  NEXT I
  115. 1150  REM   <CTRL-J><CTRL-J>*** RANK SCORES ***<CTRL-J><CTRL-J>
  116. 1160  HOME 
  117. 1170  PRINT "FINAL RESULTS"
  118. 1180  PRINT 
  119. 1190  FOR I = 1 TO N -1
  120. 1200  FOR J = I +1 TO N
  121. 1210  IF PCT(I) > = PCT(J)  THEN 1280
  122. 1220 HOLD = PCT(I)
  123. 1230 PCT(I) = PCT(J)
  124. 1240 PCT(J) = HOLD
  125. 1250 HOLD$ = PN$(I)
  126. 1260 PN$(I) = PN$(J)
  127. 1270 PN$(J) = HOLD$
  128. 1280  NEXT J
  129. 1290  NEXT I
  130. 1300  PRINT 
  131. 1310  PRINT "RANK   NAME    PERCENT"
  132. 1320  PRINT "----   ----    -------"
  133. 1330  PRINT 
  134. 1340  FOR I = 1 TO N
  135. 1350  PRINT "  ";I; TAB( 8);PN$(I); TAB( 17);PCT(I)
  136. 1360  PRINT 
  137. 1370  NEXT I
  138. 1380  PRINT : PRINT : PRINT 
  139. 1390  IF PCT(1) >PCT(2)  THEN  PRINT "Great job ";PN$(1);", you won!!!"
  140. 1400  IF PCT(1) = PCT(2)  THEN  PRINT "Good job ";PN$(1);" and ";PN$(2): PRINT "you tied for best!!!"
  141. 1410  VTAB 23: INPUT "Do you wish to play again? (Y/N): ";Q$
  142. 1420  IF  LEFT$(Q$,1) = "Y"  THEN  GOTO 430
  143. 1430  HOME 
  144. 1440  PRINT  CHR$(4);"RUN STARTUP"
  145. 1450  END 
  146. 1460 <CTRL-J><CTRL-J><CTRL-J> * * *PRO GR AM END SHERE * * *<CTRL-J><CTRL-J><CTRL-J>
  147. 1470  REM  <CTRL-J><CTRL-J> *  *  * SUBROUTINES *  *  * <CTRL-J><CTRL-J>
  148. 1480  HOME 
  149. 1490 SCROLL$ = "NEWTON'S APPLE"
  150. 1500  HGR 
  151. 1510  REM  <CTRL-J><CTRL-J>NEXT HCOLOR IS FOR BODY OF THE APPLE<CTRL-J><CTRL-J>
  152. 1520  HCOLOR= 3
  153. 1530  FOR I = 1 TO 22
  154. 1540  READ X,Y,X1,Y1
  155. 1550  HPLOT X +85,Y TO X1 +85,Y1
  156. 1560  HPLOT 193 -X,Y TO 193 -X1,Y1
  157. 1570  NEXT I
  158. 1580  REM  <CTRL-J><CTRL-J>NEXT HCOLOR IS FOR LEAF OF THE APPLE<CTRL-J><CTRL-J>
  159. 1590  HCOLOR= 3
  160. 1600  FOR I = 1 TO 15
  161. 1610  REM  <CTRL-J><CTRL-J>NEXT HCOLOR IS FOR STEM OF THE APPLE<CTRL-J><CTRL-J>
  162. 1620  IF I = 6  THEN  HCOLOR= 3
  163. 1630  READ X,Y,X1,Y1
  164. 1640  HPLOT X +85,Y TO X1 +85,Y1
  165. 1650  NEXT I
  166. 1660  VTAB 23:A$ = SCROLL$ +"        PRESS ANY KEY TO CONTINUE.....     "
  167. 1670  POKE  -16386,0
  168. 1680  HTAB 1: PRINT  LEFT$(A$,39);:A$ =  MID$ (A$,2) + LEFT$(A$,1):K =  PEEK( -16384): IF K <128  THEN  FOR K = 1 TO 20:X =  RND(8): NEXT K:K =  FRE(0): GOTO 1680
  169. 1690  PRINT  CHR$(7)
  170. 1700  TEXT : HOME : RETURN 
  171. 1710  DATA   11,92,11,102,13,106,13,87,15,84,15,109,17,112,17,82, 19,80,19,116,21,118,21,78,23,76,23,121,25,123,25,75,27,74,27 ,125,29,127,29,74,31,73,31,128,33
  172. 1720  DATA   129,33,73,35,72,35,130,37,131,37,72,39,72,39,131,41 ,131,41,73,43,74,43,131,45,130,45,75,47,76,47,130,49,130,49, 77,51,78,51,129,53,128,53,78 
  173. 1730  DATA  37,58,37,64,39,66,39,57,41,57,41,67,43,67,43,58,45,61,45,68,47,68,47,64,52,68,52,74,54,75,54,66,56,61,56,74,58,73,58,58,60,56,60,71,62,69,62,54,64,52,64,66,66,63,66,51,68,53,68,60
  174. 1740  REM   <CTRL-J><CTRL-J>*** REWARD SUBROUTINE ***<CTRL-J><CTRL-J>
  175. 1750  HOME : POKE 49239,0: POKE 49232,0: FOR J = 1 TO 1000: NEXT : TEXT : FOR J = 1 TO 20: NEXT : RETURN 
  176. 1760  REM   <CTRL-J><CTRL-J>*** PRAISE WORD SELECTION ***<CTRL-J><CTRL-J>
  177. 1770  ON  INT( RND(8) *7 +1) GOTO 1780,1790,1800,1810,1820,1830,1840
  178. 1780 PR$ = "GOOD JOB!!!": RETURN 
  179. 1790 PR$ = "RIGHT!!!": RETURN 
  180. 1800 PR$ = "GREAT!!!": RETURN 
  181. 1810 PR$ = "YOU GOT IT!!!": RETURN 
  182. 1820 PR$ = "SUPER!!!": RETURN 
  183. 1830 PR$ = "FANTASTIC!!!": RETURN 
  184. 1840 PR$ = "YOU KNOW YOUR STUFF!!!": RETURN 
  185. 1850 PR$ = "CLOSE ENOUGH...": RETURN